package com.lsw.config;

import android.content.Context;
import android.graphics.Bitmap.Config;
import android.os.Environment;
import android.util.Log;

import com.lsw.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

import java.io.File;

/**
 * 路径及缓存管理
 *
 * @author lsw
 */
public class CacheManager {
    public static final String DIR_CACHE = Environment
            .getExternalStorageDirectory() + "/";
    public static final String DIR_NAME = "shaoerzhibo";

    /**
     * 获取图片缓存路径 如果不存在，则创建路径
     *
     * @param context
     * @return
     */
    public static String getImgDir(Context context) {

        // SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // String path = DIR_CACHE + DIR_NAME + (date.format(new Date()))
        // +"/.img/";
        String path = DIR_CACHE + DIR_NAME + "/.img/";

        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        return path;
    }

    /**
     * 默认下载路径
     *
     * @param context
     * @return
     */
    public static String getDownLoadDir(Context context) {
        String path = DIR_CACHE + DIR_NAME + "/download/";
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        return path;
    }

    /**
     * 清除缓存图片
     */
    public static void chearImgCache(Context context) {
        try {
            String imgDir = getImgDir(context);
            File dir = new File(imgDir);
            if (dir != null && dir.isDirectory()) {
                File[] files = dir.listFiles();
                for (File file : files) {
                    Log.i("http==", file + "");
                    file.delete();
                }
            }
        } catch (Exception e) {
            Log.e("chearImgCache", e.toString());
        }
    }

    /**
     * 获取二维码保存的路径
     *
     * @param context
     * @return
     */
    public static String getQrcodeDir(Context context) {
        String path = DIR_CACHE
                + context.getResources().getString(R.string.app_name) + "/";
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        return path;
    }

    /**
     * 获取默认的图片显示参数
     *
     * @return
     */
    public static DisplayImageOptions getDefaultDisplay() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .bitmapConfig(Config.RGB_565)
                // default
                .showImageOnFail(R.mipmap.muti_default_pic)
                .showImageForEmptyUri(R.mipmap.muti_default_pic)
                .showImageOnLoading(R.mipmap.muti_default_pic)
                .imageScaleType(ImageScaleType.EXACTLY).build();
        return options;
    }

    /**
     * 下载图片
     *
     * @return
     */
    public static DisplayImageOptions getDownloadDisplay() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(false)
                .bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY).build();
        return options;
    }

    /**
     * 轮播图设置--商品详情
     *
     * @return
     */
    public static DisplayImageOptions getBannerDisplay() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true)
                .showImageOnLoading(R.mipmap.muti_default_pic)
                .showImageOnFail(R.mipmap.muti_default_pic)
                .showImageForEmptyUri(R.mipmap.muti_default_pic)
                .bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY).build();
        return options;
    }

    /**
     * 首页水平列表的广告图
     *
     * @return
     */
    public static DisplayImageOptions getBannerHorDisplay() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true)
                .showImageOnLoading(R.mipmap.muti_default_pic)
                .showImageOnFail(R.mipmap.muti_default_pic)
                .showImageForEmptyUri(R.mipmap.muti_default_pic)
                .bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY).build();
        return options;
    }

    /**
     * 个人信息头像
     *
     * @return
     */
    public static DisplayImageOptions getUserMyInfoPhoto() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .showImageOnLoading(R.mipmap.muti_default_pic)
                .showImageOnFail(R.mipmap.muti_default_pic)
                .showImageForEmptyUri(R.mipmap.muti_default_pic)
                .cacheInMemory(true).bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY).build();
        return options;
    }

    /**
     * 获取默认的图片显示参数
     *
     * @return
     */
    public static DisplayImageOptions getQrcodeDisplay() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true).cacheInMemory(true)
                .bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY)
                // .delayBeforeLoading(200)
                // .displayer(new FadeInBitmapDisplayer(1000)) // default
                // 可以设置动画，比如圆角或者渐变
                // .resetViewBeforeLoading(true)
                .build();
        return options;
    }

    /**
     * 加载本地图片
     *
     * @return
     */
    public static DisplayImageOptions getLocalDisplayerOptions() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(false).cacheInMemory(false)
                .bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY)
                // .delayBeforeLoading(200)
                .displayer(new FadeInBitmapDisplayer(1000)) // default
                // 可以设置动画，比如圆角或者渐变
                // .resetViewBeforeLoading(true)
                .build();
        return options;
    }

    /**
     * 加载本地图片
     *
     * @return
     */
    public static DisplayImageOptions getLocalDisplayerOptions4Upload() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(false).cacheInMemory(true)
                .bitmapConfig(Config.RGB_565) // default
                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
                // .delayBeforeLoading(200)
                // .displayer(new FadeInBitmapDisplayer(1000)) // default
                // 可以设置动画，比如圆角或者渐变
                // .resetViewBeforeLoading(true)
//                .displayer(new RoundedBitmapDisplayer(10))
                .build();
        return options;
    }

    /**
     * 获取用户头像的显示----列表页使用
     *
     * @return
     */
    public static DisplayImageOptions getUserHeaderListDisplay() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .showImageOnFail(R.mipmap.muti_default_pic)
                .showImageOnLoading(R.mipmap.muti_default_pic)
                .showImageForEmptyUri(R.mipmap.muti_default_pic)
                .cacheInMemory(true).bitmapConfig(Config.RGB_565)
                // default
                .imageScaleType(ImageScaleType.EXACTLY)
                .considerExifParams(true)
                // .delayBeforeLoading(200)
                // .displayer(new FadeInBitmapDisplayer(1000)) // default
                // 可以设置动画，比如圆角或者渐变
                // .resetViewBeforeLoading(true)
                .build();
        return options;
    }

    /**
     * 初始化imageLoader
     */
    public static void initImageLoader(Context context) {
        ImageLoader.getInstance().init(
                ImageLoaderConfiguration.createDefault(context));
        com.nostra13.universalimageloader.utils.L.writeLogs(false);
    }
}
